]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
js: Don't use templates in files with translations
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 14 Feb 2020 15:10:34 +0000 (16:10 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Mon, 17 Feb 2020 22:20:40 +0000 (23:20 +0100)
xgettext gained some support for template strings, and no longer
fails when encountering '/' somewhere between backticks.

Unfortunately its support is still buggy as hell, and it is now
silently dropping translatable strings, yay. I hate making the
code worse, but until xgettext really gets its shit together,
the only viable way forward seems to be to not use template
strings in any files listed in POTFILES.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1014

43 files changed:
js/extensionPrefs/main.js
js/gdm/loginDialog.js
js/misc/systemActions.js
js/misc/util.js
js/portalHelper/main.js
js/ui/accessDialog.js
js/ui/appDisplay.js
js/ui/appFavorites.js
js/ui/audioDeviceSelection.js
js/ui/calendar.js
js/ui/components/automountManager.js
js/ui/components/autorunManager.js
js/ui/components/networkAgent.js
js/ui/components/polkitAgent.js
js/ui/components/telepathyClient.js
js/ui/dateMenu.js
js/ui/endSessionDialog.js
js/ui/extensionDownloader.js
js/ui/extensionSystem.js
js/ui/lookingGlass.js
js/ui/main.js
js/ui/messageList.js
js/ui/messageTray.js
js/ui/mpris.js
js/ui/notificationDaemon.js
js/ui/overviewControls.js
js/ui/padOsd.js
js/ui/panel.js
js/ui/popupMenu.js
js/ui/runDialog.js
js/ui/screenShield.js
js/ui/search.js
js/ui/shellMountOperation.js
js/ui/status/accessibility.js
js/ui/status/dwellClick.js
js/ui/status/keyboard.js
js/ui/status/location.js
js/ui/status/network.js
js/ui/status/power.js
js/ui/status/thunderbolt.js
js/ui/status/volume.js
js/ui/unlockDialog.js
js/ui/windowManager.js

index 7f662a9313a8e56926690f38d963aacd9585a386..935ab0c695244a3909afc679bf1223371b01e49a 100644 (file)
@@ -277,10 +277,10 @@ var ExtensionsWindow = GObject.registerClass({
         });
         box.add(expander);
 
-        let errortext = `${exc}\n\nStack trace:\n${
-            // Indent stack trace.
-            exc.stack.split('\n').map(line => `  ${line}`).join('\n')
-        }`;
+        let errortext = '%s\n\nStack trace:\n'.format(exc);
+        // Indent stack trace.
+        errortext +=
+            exc.stack.split('\n').map(line => '  %s'.format(line)).join('\n');
 
         let buffer = new Gtk.TextBuffer({ text: errortext });
         let textview = new Gtk.TextView({
@@ -315,9 +315,9 @@ var ExtensionsWindow = GObject.registerClass({
             let clipboard = Gtk.Clipboard.get_default(w.get_display());
             // markdown for pasting in gitlab issues
             let lines = [
-                `The settings of extension ${row.uuid} had an error:`,
+                'The settings of extension %s had an error:'.format(row.uuid),
                 '```', // '`' (xgettext throws up on odd number of backticks)
-                `${exc}`,
+                exc.toString(),
                 '```', // '`'
                 '',
                 'Stack trace:',
@@ -403,7 +403,7 @@ var ExtensionsWindow = GObject.registerClass({
         this._shellProxy.ListExtensionsRemote(([extensionsMap], e) => {
             if (e) {
                 if (e instanceof Gio.DBusError) {
-                    log(`Failed to connect to shell proxy: ${e}`);
+                    log('Failed to connect to shell proxy: %s'.format(e.toString()));
                     this._mainStack.visible_child_name = 'noshell';
                 } else {
                     throw e;
@@ -703,10 +703,10 @@ var ExtensionRow = GObject.registerClass({
 
         this._updatesIcon.visible = this.hasUpdate;
 
-        this._versionLabel.label = `${this.version}`;
+        this._versionLabel.label = this.version;
         this._versionLabel.visible = this.version !== '';
 
-        this._authorLabel.label = `${this.creator}`;
+        this._authorLabel.label = this.creator;
         this._authorLabel.visible = this.creator !== '';
     }
 
@@ -747,7 +747,7 @@ function initEnvironment() {
         },
 
         logError(s) {
-            log(`ERROR: ${s}`);
+            log('ERROR: %s'.format(s));
         },
 
         userdatadir: GLib.build_filenamev([GLib.get_user_data_dir(), 'gnome-shell']),
index 92cb256ef6bf09ad89bb560deb129a9cff5e1e1a..b3a95b838d2846f340eed1319309e9bb55c8cbf7 100644 (file)
@@ -421,13 +421,13 @@ var LoginDialog = GObject.registerClass({
 
         this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA });
 
-        this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_KEY}`,
+        this._settings.connect('changed::%s'.format(GdmUtil.BANNER_MESSAGE_KEY),
                                this._updateBanner.bind(this));
-        this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_TEXT_KEY}`,
+        this._settings.connect('changed::%s'.format(GdmUtil.BANNER_MESSAGE_TEXT_KEY),
                                this._updateBanner.bind(this));
-        this._settings.connect(`changed::${GdmUtil.DISABLE_USER_LIST_KEY}`,
+        this._settings.connect('changed::%s'.format(GdmUtil.DISABLE_USER_LIST_KEY),
                                this._updateDisableUserList.bind(this));
-        this._settings.connect(`changed::${GdmUtil.LOGO_KEY}`,
+        this._settings.connect('changed::%s'.format(GdmUtil.LOGO_KEY),
                                this._updateLogo.bind(this));
 
         this._textureCache = St.TextureCache.get_default();
index 4442a5b71501c06fd497cd942cd2d4eab3b3434b..6248fe9a06b433031121e71e3f42d27c93a04226 100644 (file)
@@ -151,17 +151,17 @@ const SystemActions = GObject.registerClass({
         this._userManager.connect('user-removed',
                                   () => this._updateMultiUser());
 
-        this._lockdownSettings.connect(`changed::${DISABLE_USER_SWITCH_KEY}`,
+        this._lockdownSettings.connect('changed::%s'.format(DISABLE_USER_SWITCH_KEY),
                                        () => this._updateSwitchUser());
-        this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`,
+        this._lockdownSettings.connect('changed::%s'.format(DISABLE_LOG_OUT_KEY),
                                        () => this._updateLogout());
-        global.settings.connect(`changed::${ALWAYS_SHOW_LOG_OUT_KEY}`,
+        global.settings.connect('changed::%s'.format(ALWAYS_SHOW_LOG_OUT_KEY),
                                 () => this._updateLogout());
 
-        this._lockdownSettings.connect(`changed::${DISABLE_LOCK_SCREEN_KEY}`,
+        this._lockdownSettings.connect('changed::%s'.format(DISABLE_LOCK_SCREEN_KEY),
                                        () => this._updateLockScreen());
 
-        this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`,
+        this._lockdownSettings.connect('changed::%s'.format(DISABLE_LOG_OUT_KEY),
                                        () => this._updateHaveShutdown());
 
         this.forceUpdate();
index a58ebc5e8145d6d2148e3661f635951a3348a45b..9d30b3f95d0082a496e6b46412f1b512b3b18542 100644 (file)
@@ -21,7 +21,7 @@ const _leadingJunk = '[\\s`(\\[{\'\\"<\u00AB\u201C\u2018]';
 const _notTrailingJunk = '[^\\s`!()\\[\\]{};:\'\\".,<>?\u00AB\u00BB\u200E\u200F\u201C\u201D\u2018\u2019\u202A\u202C]';
 
 const _urlRegexp = new RegExp(
-    `(^|${_leadingJunk})` +
+    '(^|%s)'.format(_leadingJunk) +
     '(' +
         '(?:' +
             '(?:http|https|ftp)://' +             // scheme://
@@ -33,12 +33,12 @@ const _urlRegexp = new RegExp(
         '(?:' +                                   // one or more:
             '[^\\s()<>]+' +                       // run of non-space non-()
             '|' +                                 // or
-            `${_balancedParens}` +                // balanced parens
+            '%s'.format(_balancedParens) +        // balanced parens
         ')+' +
         '(?:' +                                   // end with:
-            `${_balancedParens}` +                // balanced parens
+            '%s'.format(_balancedParens) +        // balanced parens
             '|' +                                 // or
-            `${_notTrailingJunk}` +               // last non-junk char
+            '%s'.format(_notTrailingJunk) +       // last non-junk char
         ')' +
     ')', 'gi');
 
@@ -153,7 +153,7 @@ function trySpawnCommandLine(commandLine) {
     } catch (err) {
         // Replace "Error invoking GLib.shell_parse_argv: " with
         // something nicer
-        err.message = err.message.replace(/[^:]*: /, `${_("Could not parse command:")}\n`);
+        err.message = err.message.replace(/[^:]*: /, '%s\n'.format(_('Could not parse command:')));
         throw err;
     }
 
index 88adc1b8dfa334c975bf117d135a91f4a5ca8aeb..daaefa8869960751b5b11395bfced1f8b1a3c150 100644 (file)
@@ -23,7 +23,6 @@ const PortalHelperSecurityLevel = {
 };
 
 const CONNECTIVITY_CHECK_HOST = 'nmcheck.gnome.org';
-const CONNECTIVITY_CHECK_URI = `http://${CONNECTIVITY_CHECK_HOST}`;
 const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC;
 
 const HelperDBusInterface = loadInterfaceXML('org.gnome.Shell.PortalHelper');
@@ -103,7 +102,7 @@ class PortalWindow extends Gtk.ApplicationWindow {
         this._headerBar.show();
 
         if (!url) {
-            url = CONNECTIVITY_CHECK_URI;
+            url = 'http://%s'.format(CONNECTIVITY_CHECK_HOST);
             this._originalUrlWasGnome = true;
         } else {
             this._originalUrlWasGnome = false;
index 6d3ede01ec344be79a48f2f4b73e14f4b2b59f08..0e417bda7bf38ea2523a50487a76100b727f9d02 100644 (file)
@@ -138,7 +138,7 @@ var AccessDialogDBus = class {
         let [handle, appId, parentWindow_, title, description, body, options] = params;
         // We probably want to use parentWindow and global.display.focus_window
         // for this check in the future
-        if (appId && `${appId}.desktop` != this._windowTracker.focus_app.id) {
+        if (appId && '%s.desktop'.format(appId) != this._windowTracker.focus_app.id) {
             invocation.return_error_literal(Gio.DBusError,
                                             Gio.DBusError.ACCESS_DENIED,
                                             'Only the focused app is allowed to show a system access dialog');
index 77868722c4ff6ba684c12f62c50b5df3e5f2b7c4..01f87059abf3882b0df14f459bb6c54d3d85068c 100644 (file)
@@ -72,7 +72,7 @@ function _getFolderName(folder) {
 
     if (folder.get_boolean('translate')) {
         let keyfile = new GLib.KeyFile();
-        let path = `desktop-directories/${name}`;
+        let path = 'desktop-directories/%s'.format(name);
 
         try {
             keyfile.load_from_data_dirs(path, GLib.KeyFileFlags.NONE);
@@ -219,7 +219,7 @@ var BaseAppView = GObject.registerClass({
         if (this._items.has(id))
             this._items.get(id).navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
         else
-            log(`No such application ${id}`);
+            log('No such application %s'.format(id));
     }
 
     selectApp(id) {
@@ -293,7 +293,7 @@ var BaseAppView = GObject.registerClass({
     }
 
     adaptToSize(_width, _height) {
-        throw new GObject.NotImplementedError(`adaptToSize in ${this.constructor.name}`);
+        throw new GObject.NotImplementedError('adaptToSize in %s'.format(this.constructor.name));
     }
 });
 
@@ -492,7 +492,7 @@ var AllView = GObject.registerClass({
 
         let folders = this._folderSettings.get_strv('folder-children');
         folders.forEach(id => {
-            let path = `${this._folderSettings.path}folders/${id}/`;
+            let path = '%sfolders/%s/'.format(this._folderSettings.path, id);
             let icon = this._items.get(id);
             if (!icon) {
                 icon = new FolderIcon(id, path, this);
@@ -2278,7 +2278,7 @@ var AppIcon = GObject.registerClass({
 
     shellWorkspaceLaunch(params) {
         let { stack } = new Error();
-        log(`shellWorkspaceLaunch is deprecated, use app.open_new_window() instead\n${stack}`);
+        log('shellWorkspaceLaunch is deprecated, use app.open_new_window() instead\n%s'.format(stack));
 
         params = Params.parse(params, { workspace: -1,
                                         timestamp: 0 });
index 3308dd6b350495112071cd86d2bc7c7aa2be294c..653f0cfba1e3debe8aa175d2a8f1ce04cae9902f 100644 (file)
@@ -66,7 +66,7 @@ class AppFavorites {
     constructor() {
         this.FAVORITE_APPS_KEY = 'favorite-apps';
         this._favorites = {};
-        global.settings.connect(`changed::${this.FAVORITE_APPS_KEY}`, this._onFavsChanged.bind(this));
+        global.settings.connect('changed::%s'.format(this.FAVORITE_APPS_KEY), this._onFavsChanged.bind(this));
         this.reload();
     }
 
index 9bdabc225bdc1d601ba480de0fba0bbd052c48c5..15727f4f37c445975ccdf9d66c5104c8e49fc598 100644 (file)
@@ -120,7 +120,7 @@ var AudioDeviceSelectionDialog = GObject.registerClass({
         let app = Shell.AppSystem.get_default().lookup_app(desktopFile);
 
         if (!app) {
-            log(`Settings panel for desktop file ${desktopFile} could not be loaded!`);
+            log('Settings panel for desktop file %s could not be loaded!'.format(desktopFile));
             return;
         }
 
index a5a763d59d099584fdbed5153f87ed0b208c3867..524d2dd32d6f7338c8f4557001282c830253ef49 100644 (file)
@@ -18,7 +18,7 @@ var ELLIPSIS_CHAR = '\u2026';
 
 var MESSAGE_ICON_SIZE = -1; // pick up from CSS
 
-var NC_ = (context, str) => `${context}\u0004${str}`;
+var NC_ = (context, str) => '%s\u0004%s'.format(context, str);
 
 function sameYear(dateA, dateB) {
     return dateA.getYear() == dateB.getYear();
@@ -114,26 +114,26 @@ var EventSourceBase = GObject.registerClass({
     Signals: { 'changed': {} },
 }, class EventSourceBase extends GObject.Object {
     get isLoading() {
-        throw new GObject.NotImplementedError(`isLoading in ${this.constructor.name}`);
+        throw new GObject.NotImplementedError('isLoading in %s'.format(this.constructor.name));
     }
 
     get hasCalendars() {
-        throw new GObject.NotImplementedError(`hasCalendars in ${this.constructor.name}`);
+        throw new GObject.NotImplementedError('hasCalendars in %s'.format(this.constructor.name));
     }
 
     destroy() {
     }
 
     requestRange(_begin, _end) {
-        throw new GObject.NotImplementedError(`requestRange in ${this.constructor.name}`);
+        throw new GObject.NotImplementedError('requestRange in %s'.format(this.constructor.name));
     }
 
     getEvents(_begin, _end) {
-        throw new GObject.NotImplementedError(`getEvents in ${this.constructor.name}`);
+        throw new GObject.NotImplementedError('getEvents in %s'.format(this.constructor.name));
     }
 
     hasEvents(_day) {
-        throw new GObject.NotImplementedError(`hasEvents in ${this.constructor.name}`);
+        throw new GObject.NotImplementedError('hasEvents in %s'.format(this.constructor.name));
     }
 });
 
@@ -215,7 +215,7 @@ class DBusEventSource extends EventSourceBase {
                     // about the HasCalendars property and would cause an exception trying
                     // to read it)
                 } else {
-                    log(`Error loading calendars: ${e.message}`);
+                    log('Error loading calendars: %s'.format(e.message));
                     return;
                 }
             }
@@ -359,7 +359,7 @@ var Calendar = GObject.registerClass({
         this._weekStart = Shell.util_get_week_start();
         this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.calendar' });
 
-        this._settings.connect(`changed::${SHOW_WEEKDATE_KEY}`, this._onSettingsChange.bind(this));
+        this._settings.connect('changed::%s'.format(SHOW_WEEKDATE_KEY), this._onSettingsChange.bind(this));
         this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY);
 
         /**
@@ -626,13 +626,13 @@ var Calendar = GObject.registerClass({
 
             // Hack used in lieu of border-collapse - see gnome-shell.css
             if (row == 2)
-                styleClass = `calendar-day-top ${styleClass}`;
+                styleClass = 'calendar-day-top %s'.format(styleClass);
 
             let leftMost = rtl
                 ? iter.getDay() == (this._weekStart + 6) % 7
                 : iter.getDay() == this._weekStart;
             if (leftMost)
-                styleClass = `calendar-day-left ${styleClass}`;
+                styleClass = 'calendar-day-left %s'.format(styleClass);
 
             if (sameDay(now, iter))
                 styleClass += ' calendar-today';
@@ -738,15 +738,15 @@ class EventMessage extends MessageList.Message {
         let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
         if (this._event.date < periodBegin && !this._event.allDay) {
             if (rtl)
-                title = `${title}${ELLIPSIS_CHAR}`;
+                title = '%s%s'.format(title, ELLIPSIS_CHAR);
             else
-                title = `${ELLIPSIS_CHAR}${title}`;
+                title = '%s%s'.format(ELLIPSIS_CHAR, title);
         }
         if (this._event.end > periodEnd && !this._event.allDay) {
             if (rtl)
-                title = `${ELLIPSIS_CHAR}${title}`;
+                title = '%s%s'.format(ELLIPSIS_CHAR, title);
             else
-                title = `${title}${ELLIPSIS_CHAR}`;
+                title = '%s%s'.format(title, ELLIPSIS_CHAR);
         }
         return title;
     }
@@ -1204,7 +1204,7 @@ class CalendarMessageList extends St.Widget {
 
         for (let prop of ['visible', 'empty', 'can-clear']) {
             connectionsIds.push(
-                section.connect(`notify::${prop}`, this._sync.bind(this)));
+                section.connect('notify::%s'.format(prop), this._sync.bind(this)));
         }
         connectionsIds.push(section.connect('message-focused', (_s, messageActor) => {
             Util.ensureActorVisibleInScrollView(this._scrollView, messageActor);
index 371bcab7deda0012db1f96e7a4db48dcfc8ef77e..1cb84a7ec52af0bc31e2b25e08c8b82e1d7fb4f3 100644 (file)
@@ -113,7 +113,7 @@ var AutomountManager = class {
                     try {
                         drive.stop_finish(res);
                     } catch (e) {
-                        log(`Unable to stop the drive after drive-eject-button ${e.toString()}`);
+                        log('Unable to stop the drive after drive-eject-button %s'.format(e.toString()));
                     }
                 });
         } else if (drive.can_eject()) {
@@ -122,7 +122,7 @@ var AutomountManager = class {
                     try {
                         drive.eject_with_operation_finish(res);
                     } catch (e) {
-                        log(`Unable to eject the drive after drive-eject-button ${e.toString()}`);
+                        log('Unable to eject the drive after drive-eject-button %s'.format(e.toString()));
                     }
                 });
         }
@@ -210,7 +210,7 @@ var AutomountManager = class {
                 }
 
                 if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
-                    log(`Unable to mount volume ${volume.get_name()}: ${e.toString()}`);
+                    log('Unable to mount volume %s: %s'.format(volume.get_name(), e.toString()));
                 this._closeOperation(volume);
             }
         }
index ad15971080d0210baec32071b677238f4319c4b2..cfa42834baebded01b42b578d4b9bf52646e7429 100644 (file)
@@ -66,7 +66,7 @@ function startAppForMount(app, mount) {
         retval = app.launch(files,
                             global.create_app_launch_context(0, -1));
     } catch (e) {
-        log(`Unable to launch the application ${app.get_name()}: ${e}`);
+        log('Unable to launch the application %s: %s'.format(app.get_name(), e.toString()));
     }
 
     return retval;
@@ -105,7 +105,7 @@ var ContentTypeDiscoverer = class {
         try {
             contentTypes = mount.guess_content_type_finish(res);
         } catch (e) {
-            log(`Unable to guess content types on added mount ${mount.get_name()}: ${e}`);
+            log('Unable to guess content types on added mount %s: %s'.format(mount.get_name(), e.toString()));
         }
 
         if (contentTypes.length) {
index dbd2b2124f251a530c29e80e508cd921b64bbb85..4ab5985972ad0e086e6df8513d0d5605cfd8a28c 100644 (file)
@@ -204,10 +204,14 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
                            validate: this._validateWpaPsk, password: true });
             break;
         case 'none': // static WEP
-            secrets.push({ label: _('Key'), key: `wep-key${wirelessSecuritySetting.wep_tx_keyidx}`,
-                           value: wirelessSecuritySetting.get_wep_key(wirelessSecuritySetting.wep_tx_keyidx) || '',
-                           wep_key_type: wirelessSecuritySetting.wep_key_type,
-                           validate: this._validateStaticWep, password: true });
+            secrets.push({
+                label: _('Key'),
+                key: 'wep-key%s'.format(wirelessSecuritySetting.wep_tx_keyidx),
+                value: wirelessSecuritySetting.get_wep_key(wirelessSecuritySetting.wep_tx_keyidx) || '',
+                wep_key_type: wirelessSecuritySetting.wep_key_type,
+                validate: this._validateStaticWep,
+                password: true,
+            });
             break;
         case 'ieee8021x':
             if (wirelessSecuritySetting.auth_alg == 'leap') { // Cisco LEAP
@@ -221,7 +225,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
             this._get8021xSecrets(secrets);
             break;
         default:
-            log(`Invalid wireless key management: ${wirelessSecuritySetting.key_mgmt}`);
+            log('Invalid wireless key management: %s'.format(wirelessSecuritySetting.key_mgmt));
         }
     }
 
@@ -266,7 +270,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
                            value: ieee8021xSetting.private_key_password || '', password: true });
             break;
         default:
-            log(`Invalid EAP/IEEE802.1x method: ${ieee8021xSetting.get_eap_method(0)}`);
+            log('Invalid EAP/IEEE802.1x method: %s'.format(ieee8021xSetting.get_eap_method(0)));
         }
     }
 
@@ -336,7 +340,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
             this._getMobileSecrets(content.secrets, connectionType);
             break;
         default:
-            log(`Invalid connection type: ${connectionType}`);
+            log('Invalid connection type: %s'.format(connectionType));
         }
 
         return content;
@@ -581,12 +585,12 @@ var VPNRequestHandler = class {
 
         try {
             vpnSetting.foreach_data_item((key, value) => {
-                this._stdin.write(`DATA_KEY=${key}\n`, null);
-                this._stdin.write(`DATA_VAL=${value || ''}\n\n`, null);
+                this._stdin.write('DATA_KEY=%s\n'.format(key), null);
+                this._stdin.write('DATA_VAL=%s\n\n'.format(value || ''), null);
             });
             vpnSetting.foreach_secret((key, value) => {
-                this._stdin.write(`SECRET_KEY=${key}\n`, null);
-                this._stdin.write(`SECRET_VAL=${value || ''}\n\n`, null);
+                this._stdin.write('SECRET_KEY=%s\n'.format(key), null);
+                this._stdin.write('SECRET_VAL=%s\n\n'.format(value || ''), null);
             });
             this._stdin.write('DONE\n\n', null);
         } catch (e) {
@@ -616,7 +620,7 @@ var NetworkAgent = class {
             let monitor = this._pluginDir.monitor(Gio.FileMonitorFlags.NONE, null);
             monitor.connect('changed', () => (this._vpnCacheBuilt = false));
         } catch (e) {
-            log(`Failed to create monitor for VPN plugin dir: ${e.message}`);
+            log('Failed to create monitor for VPN plugin dir: %s'.format(e.message));
         }
 
         this._native.connect('new-request', this._newRequest.bind(this));
@@ -707,7 +711,7 @@ var NetworkAgent = class {
             body = _("A password is required to connect to “%s”.").format(connectionSetting.get_id());
             break;
         default:
-            log(`Invalid connection type: ${connectionType}`);
+            log('Invalid connection type: %s'.format(connectionType));
             this._native.respond(requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
             return;
         }
index 7fdfd1006f2032bd2e6156ec3623af57c9d534f2..4bfbde1bb0ed60b98d6a5d5e93780cbd1c4cea7a 100644 (file)
@@ -44,7 +44,7 @@ var AuthenticationDialog = GObject.registerClass({
         let bodyContent = new Dialog.MessageDialogContent();
 
         if (userNames.length > 1) {
-            log(`polkitAuthenticationAgent: Received ${userNames.length} ` +
+            log('polkitAuthenticationAgent: Received %d'.format(userNames.length) +
                 'identities that can be used for authentication. Only ' +
                 'considering one.');
         }
@@ -194,8 +194,8 @@ var AuthenticationDialog = GObject.registerClass({
             // We could add retrying if this turns out to be a problem
 
             log('polkitAuthenticationAgent: Failed to show modal dialog. ' +
-                `Dismissing authentication request for action-id ${this.actionId} ` +
-                `cookie ${this._cookie}`);
+                'Dismissing authentication request for action-id %s '.format(this.actionId) +
+                'cookie %s'.format(this._cookie));
             this._emitDone(true);
         }
     }
index e6ea64224fa121e5422c8c42b6eb503c947ccd52..e6ae340424c12ab60fa8fd73a5c63962c1a1bb8a 100644 (file)
@@ -87,7 +87,7 @@ var TelepathyComponent = class {
         try {
             this._client.register();
         } catch (e) {
-            throw new Error(`Could not register Telepathy client. Error: ${e}`);
+            throw new Error('Could not register Telepathy client. Error: %s'.format(e.toString()));
         }
 
         if (!this._client.account_manager.is_prepared(Tp.AccountManager.get_feature_quark_core()))
@@ -254,7 +254,7 @@ class TelepathyClient extends Tp.BaseClient {
                 dispatchOp.claim_with_finish(result);
                 this._handlingChannels(account, conn, [channel], false);
             } catch (err) {
-                log(`Failed to Claim channel: ${err}`);
+                log('Failed to Claim channel: %s'.format(err.toString()));
             }
         });
 
index 63bcbdf5ebc0afbdcdb848191da262db6f10ebf7..385cee4692957e0f1eb7b30fe99888168b912a81 100644 (file)
@@ -230,7 +230,7 @@ class WorldClocksSection extends St.Button {
 
     _onProxyReady(proxy, error) {
         if (error) {
-            log(`Failed to create GNOME Clocks proxy: ${error}`);
+            log('Failed to create GNOME Clocks proxy: %s'.format(error));
             return;
         }
 
index ff1aa0ddf5d599be8b32bbda459848dadd9d1833..42ae0d3f26e83f146973c4ef512cfa8561c341fa 100644 (file)
@@ -299,7 +299,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
                 try {
                     this._updatesPermission = Polkit.Permission.new_finish(res);
                 } catch (e) {
-                    log(`No permission to trigger offline updates: ${e}`);
+                    log('No permission to trigger offline updates: %s'.format(e.toString()));
                 }
             });
     }
@@ -563,7 +563,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
                 if (!sessionId) {
                     this._loginManager.getCurrentSessionProxy(currentSessionProxy => {
                         sessionId = currentSessionProxy.Id;
-                        log(`endSessionDialog: No XDG_SESSION_ID, fetched from logind: ${sessionId}`);
+                        log('endSessionDialog: No XDG_SESSION_ID, fetched from logind: %d'.format(sessionId));
                     });
                 }
 
index abaa644e0833689ca0f4e080a9d66a15d3769258..5f6e74b09daad87e30feb105826de6427d280475 100644 (file)
@@ -10,10 +10,9 @@ const FileUtils = imports.misc.fileUtils;
 const Main = imports.ui.main;
 const ModalDialog = imports.ui.modalDialog;
 
-var REPOSITORY_URL_BASE = 'https://extensions.gnome.org';
-var REPOSITORY_URL_DOWNLOAD = `${REPOSITORY_URL_BASE}/download-extension/%s.shell-extension.zip`;
-var REPOSITORY_URL_INFO     = `${REPOSITORY_URL_BASE}/extension-info/`;
-var REPOSITORY_URL_UPDATE   = `${REPOSITORY_URL_BASE}/update-info/`;
+var REPOSITORY_URL_DOWNLOAD = 'https://extensions.gnome.org/download-extension/%s.shell-extension.zip';
+var REPOSITORY_URL_INFO     = 'https://extensions.gnome.org/extension-info/';
+var REPOSITORY_URL_UPDATE   = 'https://extensions.gnome.org/update-info/';
 
 let _httpSession;
 
@@ -25,7 +24,7 @@ function installExtension(uuid, invocation) {
 
     _httpSession.queue_message(message, () => {
         if (message.status_code != Soup.KnownStatusCode.OK) {
-            Main.extensionManager.logExtensionError(uuid, `downloading info: ${message.status_code}`);
+            Main.extensionManager.logExtensionError(uuid, 'downloading info: %d'.format(message.status_code));
             invocation.return_dbus_error('org.gnome.Shell.DownloadInfoError', message.status_code.toString());
             return;
         }
@@ -34,7 +33,7 @@ function installExtension(uuid, invocation) {
         try {
             info = JSON.parse(message.response_body.data);
         } catch (e) {
-            Main.extensionManager.logExtensionError(uuid, `parsing info: ${e}`);
+            Main.extensionManager.logExtensionError(uuid, 'parsing info: %s'.format(e.toString()));
             invocation.return_dbus_error('org.gnome.Shell.ParseInfoError', e.toString());
             return;
         }
@@ -112,7 +111,7 @@ function downloadExtensionUpdate(uuid) {
         gotExtensionZipFile(session, message, uuid, dir, () => {
             Main.extensionManager.notifyExtensionUpdate(uuid);
         }, (code, msg) => {
-            log(`Error while downloading update for extension ${uuid}: ${code} (${msg})`);
+            log('Error while downloading update for extension %s: %s (%s)'.format(uuid, code, msg));
         });
     });
 }
@@ -133,7 +132,7 @@ function checkForUpdates() {
     let params = {
         shell_version: Config.PACKAGE_VERSION,
         installed: JSON.stringify(metadatas),
-        disable_version_validation: `${versionCheck}`,
+        disable_version_validation: versionCheck.toString(),
     };
 
     let url = REPOSITORY_URL_UPDATE;
@@ -195,8 +194,8 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
         let dir = Gio.File.new_for_path(GLib.build_filenamev([global.userdatadir, 'extensions', uuid]));
         let invocation = this._invocation;
         function errback(code, msg) {
-            log(`Error while installing ${uuid}: ${code} (${msg})`);
-            invocation.return_dbus_error(`org.gnome.Shell.${code}`, msg || '');
+            log('Error while installing %s: %s (%s)'.format(uuid, code, msg));
+            invocation.return_dbus_error('org.gnome.Shell.%s'.format(code), msg || '');
         }
 
         function callback() {
@@ -204,7 +203,7 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
                 let extension = Main.extensionManager.createExtensionObject(uuid, dir, ExtensionUtils.ExtensionType.PER_USER);
                 Main.extensionManager.loadExtension(extension);
                 if (!Main.extensionManager.enableExtension(uuid))
-                    throw new Error(`Cannot add ${uuid} to enabled extensions gsettings key`);
+                    throw new Error('Cannot add %s to enabled extensions gsettings key'.format(uuid));
             } catch (e) {
                 uninstallExtension(uuid);
                 errback('LoadExtensionError', e);
index 9d883505e3c8411fc1a9f22161f0cbada8650a48..3f2ee35ef4072e82a9580cb74e8b9627a9af5a7c 100644 (file)
@@ -42,7 +42,7 @@ var ExtensionManager = class {
         try {
             disableFile.create(Gio.FileCreateFlags.REPLACE_DESTINATION, null);
         } catch (e) {
-            log(`Failed to create file ${disableFilename}: ${e.message}`);
+            log('Failed to create file %s: %s'.format(disableFilename, e.message));
         }
 
         GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 60, () => {
@@ -140,7 +140,7 @@ var ExtensionManager = class {
         if (extension.state != ExtensionState.DISABLED)
             return;
 
-        let stylesheetNames = [`${global.session_mode}.css`, 'stylesheet.css'];
+        let stylesheetNames = ['%s.css'.format(global.session_mode), 'stylesheet.css'];
         let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
         for (let i = 0; i < stylesheetNames.length; i++) {
             try {
@@ -236,7 +236,7 @@ var ExtensionManager = class {
         if (!extension)
             return;
 
-        let message = `${error}`;
+        let message = error.toString();
 
         extension.error = message;
         extension.state = ExtensionState.ERROR;
@@ -244,7 +244,7 @@ var ExtensionManager = class {
             extension.errors = [];
         extension.errors.push(message);
 
-        logError(error, `Extension ${uuid}`);
+        logError(error, 'Extension %s'.format(uuid));
         this.emit('extension-state-changed', extension);
     }
 
@@ -259,24 +259,24 @@ var ExtensionManager = class {
             if (metadataContents instanceof Uint8Array)
                 metadataContents = imports.byteArray.toString(metadataContents);
         } catch (e) {
-            throw new Error(`Failed to load metadata.json: ${e}`);
+            throw new Error('Failed to load metadata.json: %s'.format(e.toString()));
         }
         let meta;
         try {
             meta = JSON.parse(metadataContents);
         } catch (e) {
-            throw new Error(`Failed to parse metadata.json: ${e}`);
+            throw new Error('Failed to parse metadata.json: %s'.format(e.toString()));
         }
 
         let requiredProperties = ['uuid', 'name', 'description', 'shell-version'];
         for (let i = 0; i < requiredProperties.length; i++) {
             let prop = requiredProperties[i];
             if (!meta[prop])
-                throw new Error(`missing "${prop}" property in metadata.json`);
+                throw new Error('missing "%s" property in metadata.json'.format(prop));
         }
 
         if (uuid != meta.uuid)
-            throw new Error(`uuid "${meta.uuid}" from metadata.json does not match directory name "${uuid}"`);
+            throw new Error('uuid "%s" from metadata.json does not match directory name "%s"'.format(meta.uuid, uuid));
 
         let extension = {
             metadata: meta,
@@ -496,17 +496,17 @@ var ExtensionManager = class {
     }
 
     _loadExtensions() {
-        global.settings.connect(`changed::${ENABLED_EXTENSIONS_KEY}`,
+        global.settings.connect('changed::%s'.format(ENABLED_EXTENSIONS_KEY),
             this._onEnabledExtensionsChanged.bind(this));
-        global.settings.connect(`changed::${DISABLED_EXTENSIONS_KEY}`,
+        global.settings.connect('changed::%s'.format(DISABLED_EXTENSIONS_KEY),
             this._onEnabledExtensionsChanged.bind(this));
-        global.settings.connect(`changed::${DISABLE_USER_EXTENSIONS_KEY}`,
+        global.settings.connect('changed::%s'.format(DISABLE_USER_EXTENSIONS_KEY),
             this._onUserExtensionsEnabledChanged.bind(this));
-        global.settings.connect(`changed::${EXTENSION_DISABLE_VERSION_CHECK_KEY}`,
+        global.settings.connect('changed::%s'.format(EXTENSION_DISABLE_VERSION_CHECK_KEY),
             this._onVersionValidationChanged.bind(this));
-        global.settings.connect(`writable-changed::${ENABLED_EXTENSIONS_KEY}`,
+        global.settings.connect('writable-changed::%s'.format(ENABLED_EXTENSIONS_KEY),
             this._onSettingsWritableChanged.bind(this));
-        global.settings.connect(`writable-changed::${DISABLED_EXTENSIONS_KEY}`,
+        global.settings.connect('writable-changed::%s'.format(DISABLED_EXTENSIONS_KEY),
             this._onSettingsWritableChanged.bind(this));
 
         this._enabledExtensions = this._getEnabledExtensions();
@@ -519,7 +519,7 @@ var ExtensionManager = class {
             let uuid = info.get_name();
             let existing = this.lookup(uuid);
             if (existing) {
-                log(`Extension ${uuid} already installed in ${existing.path}. ${dir.get_path()} will not be loaded`);
+                log('Extension %s already installed in %s. %s will not be loaded'.format(uuid, existing.path, dir.get_path()));
                 return;
             }
 
@@ -530,7 +530,7 @@ var ExtensionManager = class {
             try {
                 extension = this.createExtensionObject(uuid, dir, type);
             } catch (e) {
-                logError(e, `Could not load extension ${uuid}`);
+                logError(e, 'Could not load extension %s'.format(uuid));
                 return;
             }
             this.loadExtension(extension);
index 9e32183a25e1e5101b5a5aa2894bfea7c7ec80a9..d101591efadd8fb9a681b1c908696b21c7e07937 100644 (file)
@@ -244,7 +244,7 @@ function objectToString(o) {
         // special case this since the default is way, way too verbose
         return '<js function>';
     } else {
-        return `${o}`;
+        return o.toString();
     }
 }
 
@@ -291,7 +291,7 @@ class Result extends St.BoxLayout {
         this.add(cmdTxt);
         let box = new St.BoxLayout({});
         this.add(box);
-        let resultTxt = new St.Label({ text: `r(${index}) = ` });
+        let resultTxt = new St.Label({ text: 'r(%d) = '.format(index) });
         resultTxt.clutter_text.ellipsize = Pango.EllipsizeMode.END;
         box.add(resultTxt);
         let objLink = new ObjLink(this._lookingGlass, o);
@@ -331,7 +331,7 @@ var WindowList = GObject.registerClass({
             box.add_child(windowLink);
             let propsBox = new St.BoxLayout({ vertical: true, style: 'padding-left: 6px;' });
             box.add(propsBox);
-            propsBox.add(new St.Label({ text: `wmclass: ${metaWindow.get_wm_class()}` }));
+            propsBox.add(new St.Label({ text: 'wmclass: %s'.format(metaWindow.get_wm_class()) }));
             let app = tracker.get_window_app(metaWindow);
             if (app != null && !app.is_window_backed()) {
                 let icon = app.create_icon_texture(22);
@@ -424,7 +424,7 @@ class ObjInspector extends St.ScrollView {
                     link = new St.Label({ text: '<error>' });
                 }
                 let box = new St.BoxLayout();
-                box.add(new St.Label({ text: `${propName}: ` }));
+                box.add(new St.Label({ text: '%s: '.format(propName) }));
                 box.add(link);
                 this._container.add_actor(box);
             }
@@ -641,9 +641,9 @@ var Inspector = GObject.registerClass({
             this._target = target;
         this._pointerTarget = target;
 
-        let position = `[inspect x: ${stageX} y: ${stageY}]`;
+        let position = '[inspect x: %d y: %d]'.format(stageX, stageY);
         this._displayText.text = '';
-        this._displayText.text = `${position} ${this._target}`;
+        this._displayText.text = '%s %s'.format(position, this._target);
 
         this._lookingGlass.setBorderPaintTarget(this._target);
     }
@@ -846,7 +846,7 @@ class LookingGlass extends St.BoxLayout {
         inspectIcon.connect('button-press-event', () => {
             let inspector = new Inspector(this);
             inspector.connect('target', (i, target, stageX, stageY) => {
-                this._pushResult(`inspect(${Math.round(stageX)}, ${Math.round(stageY)})`, target);
+                this._pushResult('inspect(%d, %d)'.format(Math.round(stageX), Math.round(stageY)), target);
             });
             inspector.connect('closed', () => {
                 this.show();
@@ -952,9 +952,8 @@ class LookingGlass extends St.BoxLayout {
         // monospace font to be bold/oblique/etc. Could easily be added here.
         let size = fontDesc.get_size() / 1024.;
         let unit = fontDesc.get_size_is_absolute() ? 'px' : 'pt';
-        this.style = `
-            font-size: ${size}${unit};
-            font-family: "${fontDesc.get_family()}";`;
+        this.style = 'font-size: %d%s; font-family: "%s";'.format(
+            size, unit, fontDesc.get_family());
     }
 
     setBorderPaintTarget(obj) {
@@ -1035,7 +1034,7 @@ class LookingGlass extends St.BoxLayout {
         this._history.addItem(command);
 
         let lines = command.split(';');
-        lines.push(`return ${lines.pop()}`);
+        lines.push('return %s'.format(lines.pop()));
 
         let fullCmd = commandHeader + lines.join(';');
 
@@ -1043,7 +1042,7 @@ class LookingGlass extends St.BoxLayout {
         try {
             resultObj = Function(fullCmd)();
         } catch (e) {
-            resultObj = `<exception ${e}>`;
+            resultObj = '<exception %s>'.format(e.toString());
         }
 
         this._pushResult(command, resultObj);
@@ -1062,7 +1061,7 @@ class LookingGlass extends St.BoxLayout {
         try {
             return this._resultsArea.get_child_at_index(idx - this._offset).o;
         } catch (e) {
-            throw new Error(`Unknown result at index ${idx}`);
+            throw new Error('Unknown result at index %d'.format(idx));
         }
     }
 
index 09b0249aa7ec373e6b5b5b1449a12541cec92ef1..f0a0ac15f76babd4de8762381df1a8631125d4b1 100644 (file)
@@ -257,7 +257,7 @@ function _initializeUI() {
         if (sessionMode.currentMode != 'gdm' &&
             sessionMode.currentMode != 'initial-setup') {
             GLib.log_structured(LOG_DOMAIN, GLib.LogLevelFlags.LEVEL_MESSAGE, {
-                'MESSAGE': `GNOME Shell started at ${_startDate}`,
+                'MESSAGE': 'GNOME Shell started at %s'.format(_startDate),
                 'MESSAGE_ID': GNOMESHELL_STARTED_MESSAGE_ID,
             });
         }
@@ -280,7 +280,7 @@ function _initializeUI() {
         let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
         if (perfModuleName) {
             let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");
-            let module = eval(`imports.perf.${perfModuleName};`);
+            let module = eval('imports.perf.%s;'.format(perfModuleName));
             Scripting.runPerfScript(module, perfOutput);
         }
     });
@@ -289,7 +289,7 @@ function _initializeUI() {
 function _getStylesheet(name) {
     let stylesheet;
 
-    stylesheet = Gio.File.new_for_uri(`resource:///org/gnome/shell/theme/${name}`);
+    stylesheet = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/%s'.format(name));
     if (stylesheet.query_exists(null))
         return stylesheet;
 
@@ -301,7 +301,7 @@ function _getStylesheet(name) {
             return stylesheet;
     }
 
-    stylesheet = Gio.File.new_for_path(`${global.datadir}/theme/${name}`);
+    stylesheet = Gio.File.new_for_path('%s/theme/%s'.format(global.datadir, name));
     if (stylesheet.query_exists(null))
         return stylesheet;
 
@@ -359,12 +359,12 @@ function reloadThemeResource() {
     if (_themeResource)
         _themeResource._unregister();
 
-    _themeResource = Gio.Resource.load(`${global.datadir}/gnome-shell-theme.gresource`);
+    _themeResource = Gio.Resource.load('%s/gnome-shell-theme.gresource'.format(global.datadir));
     _themeResource._register();
 }
 
 function _loadOskLayouts() {
-    _oskResource = Gio.Resource.load(`${global.datadir}/gnome-shell-osk-layouts.gresource`);
+    _oskResource = Gio.Resource.load('%s/gnome-shell-osk-layouts.gresource'.format(global.datadir));
     _oskResource._register();
 }
 
@@ -418,9 +418,9 @@ function notify(msg, details) {
 function notifyError(msg, details) {
     // Also print to stderr so it's logged somewhere
     if (details)
-        log(`error: ${msg}: ${details}`);
+        log('error: %s: %s'.format(msg, details));
     else
-        log(`error: ${msg}`);
+        log('error: %s'.format(msg));
 
     notify(msg, details);
 }
@@ -687,7 +687,7 @@ function _queueBeforeRedraw(workId) {
  */
 function initializeDeferredWork(actor, callback) {
     // Turn into a string so we can use as an object property
-    let workId = `${++_deferredWorkSequence}`;
+    let workId = (++_deferredWorkSequence).toString();
     _deferredWorkData[workId] = { actor,
                                   callback };
     actor.connect('notify::mapped', () => {
index e798d0bfc329b88618bd133d6735642093dd861f..0b4f7db6f127956790a4f31d7f6cd1b089294a8d 100644 (file)
@@ -79,7 +79,7 @@ class URLHighlighter extends St.Label {
         if (urlId != -1) {
             let url = this._urls[urlId].url;
             if (!url.includes(':'))
-                url = `http://${url}`;
+                url = 'http://%s'.format(url);
 
             Gio.app_info_launch_default_for_uri(
                 url, global.create_app_launch_context(0, -1));
@@ -132,7 +132,7 @@ class URLHighlighter extends St.Label {
         for (let i = 0; i < urls.length; i++) {
             let url = urls[i];
             let str = this._text.substr(pos, url.pos - pos);
-            markup += `${str}<span foreground="${this._linkColor}"><u>${url.url}</u></span>`;
+            markup += '%s<span foreground="%s"><u>%s</u></span>'.format(str, this._linkColor, url.url);
             pos = url.pos + url.url.length;
         }
         markup += this._text.substr(pos);
index ed65130e677cac72286ec7d6b960e09de2d2ec5c..6f03968e9e060b708b9772e14130a75008b3032c 100644 (file)
@@ -229,15 +229,17 @@ var NotificationApplicationPolicy = GObject.registerClass({
         this._canonicalId = this._canonicalizeId(id);
 
         this._masterSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications' });
-        this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications.application',
-                                            path: `/org/gnome/desktop/notifications/application/${this._canonicalId}/` });
+        this._settings = new Gio.Settings({
+            schema_id: 'org.gnome.desktop.notifications.application',
+            path: '/org/gnome/desktop/notifications/application/%s/'.format(this._canonicalId),
+        });
 
         this._masterSettings.connect('changed', this._changed.bind(this));
         this._settings.connect('changed', this._changed.bind(this));
     }
 
     store() {
-        this._settings.set_string('application-id', `${this.id}.desktop`);
+        this._settings.set_string('application-id', '%s.desktop'.format(this.id));
 
         let apps = this._masterSettings.get_strv('application-children');
         if (!apps.includes(this._canonicalId)) {
@@ -1077,7 +1079,7 @@ var MessageTray = GObject.registerClass({
 
     add(source) {
         if (this.contains(source)) {
-            log(`Trying to re-add source ${source.title}`);
+            log('Trying to re-add source %s'.format(source.title));
             return;
         }
 
index a16e56b5daab2c80eb959dcbe7a11ab9d2b61d41..bc98c0402e16acc09569a522332e806af987b266 100644 (file)
@@ -147,7 +147,7 @@ var MprisPlayer = class MprisPlayer {
         // so prefer activating the app via .desktop file if possible
         let app = null;
         if (this._mprisProxy.DesktopEntry) {
-            let desktopId = `${this._mprisProxy.DesktopEntry}.desktop`;
+            let desktopId = '%s.desktop'.format(this._mprisProxy.DesktopEntry);
             app = Shell.AppSystem.get_default().lookup_app(desktopId);
         }
 
@@ -192,9 +192,9 @@ var MprisPlayer = class MprisPlayer {
         if (!Array.isArray(this._trackArtists) ||
             !this._trackArtists.every(artist => typeof artist === 'string')) {
             if (typeof this._trackArtists !== 'undefined') {
-                log(`Received faulty track artist metadata from ${
-                    this._busName}; expected an array of strings, got ${
-                    this._trackArtists} (${typeof this._trackArtists})`);
+                log(('Received faulty track artist metadata from %s; ' +
+                    'expected an array of strings, got %s (%s)').format(
+                    this._busName, this._trackArtists, typeof this._trackArtists));
             }
             this._trackArtists =  [_("Unknown artist")];
         }
@@ -202,9 +202,9 @@ var MprisPlayer = class MprisPlayer {
         this._trackTitle = metadata['xesam:title'];
         if (typeof this._trackTitle !== 'string') {
             if (typeof this._trackTitle !== 'undefined') {
-                log(`Received faulty track title metadata from ${
-                    this._busName}; expected a string, got ${
-                    this._trackTitle} (${typeof this._trackTitle})`);
+                log(('Received faulty track title metadata from %s; ' +
+                    'expected a string, got %s (%s)').format(
+                    this._busName, this._trackTitle, typeof this._trackTitle));
             }
             this._trackTitle = _("Unknown title");
         }
@@ -212,9 +212,9 @@ var MprisPlayer = class MprisPlayer {
         this._trackCoverUrl = metadata['mpris:artUrl'];
         if (typeof this._trackCoverUrl !== 'string') {
             if (typeof this._trackCoverUrl !== 'undefined') {
-                log(`Received faulty track cover art metadata from ${
-                    this._busName}; expected a string, got ${
-                    this._trackCoverUrl} (${typeof this._trackCoverUrl})`);
+                log(('Received faulty track cover art metadata from %s; ' +
+                    'expected a string, got %s (%s)').format(
+                    this._busName, this._trackCoverUrl, typeof this._trackCoverUrl));
             }
             this._trackCoverUrl = '';
         }
index 1765ca369ac25250f03f0b49d261a4e0895d06ef..0133affd92c9bf0c44a75d831aaf6d26f76e96f5 100644 (file)
@@ -477,7 +477,7 @@ class FdoNotificationDaemonSource extends MessageTray.Source {
             return app;
 
         if (appId) {
-            app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`);
+            app = Shell.AppSystem.get_default().lookup_app('%s.desktop'.format(appId));
             if (app != null)
                 return app;
         }
@@ -614,7 +614,7 @@ function objectPathFromAppId(appId) {
 }
 
 function getPlatformData() {
-    let startupId = GLib.Variant.new('s', `_TIME${global.get_current_time()}`);
+    let startupId = GLib.Variant.new('s', '_TIME%s'.format(global.get_current_time()));
     return { "desktop-startup-id": startupId };
 }
 
@@ -627,7 +627,7 @@ class GtkNotificationDaemonAppSource extends MessageTray.Source {
         if (!GLib.Variant.is_object_path(objectPath))
             throw new InvalidAppError();
 
-        let app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`);
+        let app = Shell.AppSystem.get_default().lookup_app('%s.desktop'.format(appId));
         if (!app)
             throw new InvalidAppError();
 
index 36014394577b5c08481f9f760ffd7974b710239c..cc430f918d7dafc9b9941e11dfcbc5bf141e0af0 100644 (file)
@@ -127,7 +127,7 @@ class SlidingControl extends St.Widget {
     }
 
     _getSlide() {
-        throw new GObject.NotImplementedError(`_getSlide in ${this.constructor.name}`);
+        throw new GObject.NotImplementedError('_getSlide in %s'.format(this.constructor.name));
     }
 
     _updateSlide() {
index ddcc08bef53ac409c7f51cd7a8182b23a5fc2d0b..632b52781553ccd21382785717e3b72c14691cd4 100644 (file)
@@ -347,9 +347,7 @@ var PadDiagram = GObject.registerClass({
         return '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' +
                '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" ' +
                'xmlns:xi="http://www.w3.org/2001/XInclude" ' +
-               `width="${ // " (give xgettext the paired quotes it expects)
-                   this._imageWidth
-               }" height="${this._imageHeight}"> ` + // "
+               'width="%d" height="%d">'.format(this._imageWidth, this._imageHeight) +
                '<style type="text/css">';
     }
 
@@ -364,10 +362,10 @@ var PadDiagram = GObject.registerClass({
 
         for (let i = 0; i < this._activeButtons.length; i++) {
             let ch = String.fromCharCode('A'.charCodeAt() + this._activeButtons[i]);
-            css += `.${ch} {
-                stroke: ${ACTIVE_COLOR} !important;
-                fill: ${ACTIVE_COLOR} !important;
-            }`;
+            css += '.%s {'.format(ch);
+            css += '    stroke: %s !important;'.format(ACTIVE_COLOR);
+            css += '    fill: %s !important;'.format(ACTIVE_COLOR);
+            css += '}';
         }
 
         return css;
@@ -477,12 +475,12 @@ var PadDiagram = GObject.registerClass({
         let leaderPos, leaderSize, pos;
         let found, direction;
 
-        [found, pos] = this._handle.get_position_sub(`#${labelName}`);
+        [found, pos] = this._handle.get_position_sub('#%s'.format(labelName));
         if (!found)
             return [false];
 
-        [found, leaderPos] = this._handle.get_position_sub(`#${leaderName}`);
-        [found, leaderSize] = this._handle.get_dimensions_sub(`#${leaderName}`);
+        [found, leaderPos] = this._handle.get_position_sub('#%s'.format(leaderName));
+        [found, leaderSize] = this._handle.get_dimensions_sub('#%s'.format(leaderName));
         if (!found)
             return [false];
 
@@ -504,8 +502,8 @@ var PadDiagram = GObject.registerClass({
 
     getButtonLabelCoords(button) {
         let ch = String.fromCharCode('A'.charCodeAt() + button);
-        let labelName = `Label${ch}`;
-        let leaderName = `Leader${ch}`;
+        let labelName = 'Label%s'.format(ch);
+        let leaderName = 'Leader%s'.format(ch);
 
         return this._getItemLabelCoords(labelName, leaderName);
     }
@@ -513,8 +511,8 @@ var PadDiagram = GObject.registerClass({
     getRingLabelCoords(number, dir) {
         let numStr = number > 0 ? (number + 1).toString() : '';
         let dirStr = dir == CW ? 'CW' : 'CCW';
-        let labelName = `LabelRing${numStr}${dirStr}`;
-        let leaderName = `LeaderRing${numStr}${dirStr}`;
+        let labelName = 'LabelRing%s%s'.format(numStr, dirStr);
+        let leaderName = 'LeaderRing%s%s'.format(numStr, dirStr);
 
         return this._getItemLabelCoords(labelName, leaderName);
     }
@@ -522,8 +520,8 @@ var PadDiagram = GObject.registerClass({
     getStripLabelCoords(number, dir) {
         let numStr = number > 0 ? (number + 1).toString() : '';
         let dirStr = dir == UP ? 'Up' : 'Down';
-        let labelName = `LabelStrip${numStr}${dirStr}`;
-        let leaderName = `LeaderStrip${numStr}${dirStr}`;
+        let labelName = 'LabelStrip%s%s'.format(numStr, dirStr);
+        let leaderName = 'LeaderStrip%s%s'.format(numStr, dirStr);
 
         return this._getItemLabelCoords(labelName, leaderName);
     }
@@ -870,7 +868,7 @@ var PadOsd = GObject.registerClass({
         }
 
         this._titleLabel.clutter_text.set_markup(
-            `<span size="larger"><b>${title}</b></span>`);
+            '<span size="larger"><b>%s</b></span>'.format(title));
     }
 
     _isEditedAction(type, number, dir) {
@@ -932,7 +930,7 @@ var PadOsd = GObject.registerClass({
 
     _startButtonActionEdition(button) {
         let ch = String.fromCharCode('A'.charCodeAt() + button);
-        let key = `button${ch}`;
+        let key = 'button%s'.format(ch);
         this._startActionEdition(key, Meta.PadActionType.BUTTON, button);
     }
 
index 80e6179b6967779e7703a944305950622109db8f..eb3a19599666fe33eb0b0d1e9d0d99af3843d187 100644 (file)
@@ -1099,7 +1099,7 @@ class Panel extends St.Widget {
 
     addToStatusArea(role, indicator, position, box) {
         if (this.statusArea[role])
-            throw new Error(`Extension point conflict: there is already a status indicator for role ${role}`);
+            throw new Error('Extension point conflict: there is already a status indicator for role %s'.format(role));
 
         if (!(indicator instanceof PanelMenu.Button))
             throw new TypeError('Status indicator must be an instance of PanelMenu.Button');
index 0cc2803a49ac020e48f9f3c7be84339bfd4048a2..ad827ac5b3583f0b42ce3801e82fa3ab54286468 100644 (file)
@@ -462,7 +462,7 @@ class PopupImageMenuItem extends PopupBaseMenuItem {
 var PopupMenuBase = class {
     constructor(sourceActor, styleClass) {
         if (this.constructor === PopupMenuBase)
-            throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
+            throw new TypeError('Cannot instantiate abstract class %s'.format(this.constructor.name));
 
         this.sourceActor = sourceActor;
         this.focusActor = sourceActor;
@@ -546,7 +546,7 @@ var PopupMenuBase = class {
             let app = Shell.AppSystem.get_default().lookup_app(desktopFile);
 
             if (!app) {
-                log(`Settings panel for desktop file ${desktopFile} could not be loaded!`);
+                log('Settings panel for desktop file %s could not be loaded!'.format(desktopFile));
                 return;
             }
 
index 8794f74885a4dd03fb7f0282abc750ffe0f3d44c..356a974363d330a07aa82c1ac976e593218f0b93 100644 (file)
@@ -194,7 +194,7 @@ class RunDialog extends ModalDialog.ModalDialog {
                 if (inTerminal) {
                     let exec = this._terminalSettings.get_string(EXEC_KEY);
                     let execArg = this._terminalSettings.get_string(EXEC_ARG_KEY);
-                    command = `${exec} ${execArg} ${input}`;
+                    command = '%s %s %s'.format(exec, execArg, input);
                 }
                 Util.trySpawnCommandLine(command);
             } catch (e) {
@@ -205,7 +205,7 @@ class RunDialog extends ModalDialog.ModalDialog {
                 } else {
                     if (input.charAt(0) == '~')
                         input = input.slice(1);
-                    path = `${GLib.get_home_dir()}/${input}`;
+                    path = '%s/%s'.format(GLib.get_home_dir(), input);
                 }
 
                 if (GLib.file_test(path, GLib.FileTest.EXISTS)) {
index 0b5e844d86ec9c805c1daec6a4f625c620cba4f3..de43d3da19ee68d4be4fac4bdbc0c9e71314a726 100644 (file)
@@ -112,10 +112,10 @@ var ScreenShield = class {
         });
 
         this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
-        this._settings.connect(`changed::${LOCK_ENABLED_KEY}`, this._syncInhibitor.bind(this));
+        this._settings.connect('changed::%s'.format(LOCK_ENABLED_KEY), this._syncInhibitor.bind(this));
 
         this._lockSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
-        this._lockSettings.connect(`changed::${DISABLE_LOCK_KEY}`, this._syncInhibitor.bind(this));
+        this._lockSettings.connect('changed::%s'.format(DISABLE_LOCK_KEY), this._syncInhibitor.bind(this));
 
         this._isModal = false;
         this._isGreeter = false;
index 37188ffbd91a02907ad9050f6eec2b970394f746..88f06211c4f6ccb473ecee530b8030ef6b655085 100644 (file)
@@ -231,18 +231,18 @@ var SearchResultsBase = GObject.registerClass({
             this.provider.getResultMetas(metasNeeded, metas => {
                 if (this._cancellable.is_cancelled()) {
                     if (metas.length > 0)
-                        log(`Search provider ${this.provider.id} returned results after the request was canceled`);
+                        log('Search provider %s returned results after the request was canceled'.format(this.provider.id));
                     callback(false);
                     return;
                 }
                 if (metas.length != metasNeeded.length) {
-                    log(`Wrong number of result metas returned by search provider ${this.provider.id}: ` +
-                        `expected ${metasNeeded.length} but got ${metas.length}`);
+                    log('Wrong number of result metas returned by search provider %s: '.format(this.provider.id) +
+                        'expected %d but got %d'.format(metasNeeded.length, metas.length));
                     callback(false);
                     return;
                 }
                 if (metas.some(meta => !meta.name || !meta.id)) {
-                    log(`Invalid result meta returned from search provider ${this.provider.id}`);
+                    log('Invalid result meta returned from search provider %s'.format(this.provider.id));
                     callback(false);
                     return;
                 }
@@ -609,7 +609,7 @@ var SearchResultsView = GObject.registerClass({
             this._searchTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 150, this._onSearchTimeout.bind(this));
 
         let escapedTerms = this._terms.map(term => Shell.util_regex_escape(term));
-        this._highlightRegex = new RegExp(`(${escapedTerms.join('|')})`, 'gi');
+        this._highlightRegex = new RegExp('(%s)'.format(escapedTerms.join('|')), 'gi');
 
         this.emit('terms-changed');
     }
index 702f2c2b61dc83d0e9d5dadd2237a2526c7d8843..e17b0bc174eefed93d720c1b0dfb53f52924898b 100644 (file)
@@ -570,7 +570,7 @@ var GnomeShellMountOpHandler = class {
     _setCurrentRequest(invocation, id, type) {
         let oldId = this._currentId;
         let oldType = this._currentType;
-        let requestId = `${id}@${invocation.get_sender()}`;
+        let requestId = '%s@%s'.format(id, invocation.get_sender());
 
         this._clearCurrentRequest(Gio.MountOperationResult.UNHANDLED, {});
 
index aa19bd86d5373dd54d29d2a00ee541eb66003a07..206ed5114c9131b0edfedbd7d61bf63eb917f459 100644 (file)
@@ -42,7 +42,7 @@ class ATIndicator extends PanelMenu.Button {
         this.add_child(this._hbox);
 
         this._a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
-        this._a11ySettings.connect(`changed::${KEY_ALWAYS_SHOW}`, this._queueSyncMenuVisibility.bind(this));
+        this._a11ySettings.connect('changed::%s'.format(KEY_ALWAYS_SHOW), this._queueSyncMenuVisibility.bind(this));
 
         let highContrast = this._buildHCItem();
         this.menu.addMenuItem(highContrast);
@@ -118,7 +118,7 @@ class ATIndicator extends PanelMenu.Button {
             settings.is_writable(key),
             enabled => settings.set_boolean(key, enabled));
 
-        settings.connect(`changed::${key}`, () => {
+        settings.connect('changed::%s'.format(key), () => {
             widget.setToggleState(settings.get_boolean(key));
 
             this._queueSyncMenuVisibility();
@@ -150,7 +150,7 @@ class ATIndicator extends PanelMenu.Button {
                 }
             });
 
-        interfaceSettings.connect(`changed::${KEY_GTK_THEME}`, () => {
+        interfaceSettings.connect('changed::%s'.format(KEY_GTK_THEME), () => {
             let value = interfaceSettings.get_string(KEY_GTK_THEME);
             if (value == HIGH_CONTRAST_THEME) {
                 highContrast.setToggleState(true);
@@ -162,7 +162,7 @@ class ATIndicator extends PanelMenu.Button {
             this._queueSyncMenuVisibility();
         });
 
-        interfaceSettings.connect(`changed::${KEY_ICON_THEME}`, () => {
+        interfaceSettings.connect('changed::%s'.format(KEY_ICON_THEME), () => {
             let value = interfaceSettings.get_string(KEY_ICON_THEME);
             if (value != HIGH_CONTRAST_THEME)
                 iconTheme = value;
@@ -187,7 +187,7 @@ class ATIndicator extends PanelMenu.Button {
                 }
             });
 
-        settings.connect(`changed::${KEY_TEXT_SCALING_FACTOR}`, () => {
+        settings.connect('changed::%s'.format(KEY_TEXT_SCALING_FACTOR), () => {
             factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
             let active = factor > 1.0;
             widget.setToggleState(active);
index c194d33291e78b947b9fa57492b976acfbfb69b0..ce13f73bae758aaf4a7fe6eaed354282767f7db8 100644 (file)
@@ -45,8 +45,8 @@ class DwellClickIndicator extends PanelMenu.Button {
         this.add_child(this._hbox);
 
         this._a11ySettings = new Gio.Settings({ schema_id: MOUSE_A11Y_SCHEMA });
-        this._a11ySettings.connect(`changed::${KEY_DWELL_CLICK_ENABLED}`, this._syncMenuVisibility.bind(this));
-        this._a11ySettings.connect(`changed::${KEY_DWELL_MODE}`, this._syncMenuVisibility.bind(this));
+        this._a11ySettings.connect('changed::%s'.format(KEY_DWELL_CLICK_ENABLED), this._syncMenuVisibility.bind(this));
+        this._a11ySettings.connect('changed::%s'.format(KEY_DWELL_MODE), this._syncMenuVisibility.bind(this));
 
         this._seat = Clutter.get_default_backend().get_default_seat();
         this._seat.connect('ptr-a11y-dwell-click-type-changed', this._updateClickType.bind(this));
index ae7acac34aa51c6b2b00cb01105d1183e2d070d5..2f0ab94f0592f147a8dac43cb6fc10e11d8604db 100644 (file)
@@ -64,7 +64,7 @@ var InputSource = class {
             return this.id;
 
         if (engineDesc.variant && engineDesc.variant.length > 0)
-            return `${engineDesc.layout}+${engineDesc.variant}`;
+            return '%s+%s'.format(engineDesc.layout, engineDesc.variant);
         else
             return engineDesc.layout;
     }
@@ -138,7 +138,7 @@ class InputSourceSwitcher extends SwitcherPopup.SwitcherList {
 var InputSourceSettings = class {
     constructor() {
         if (this.constructor === InputSourceSettings)
-            throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
+            throw new TypeError('Cannot instantiate abstract class %s'.format(this.constructor.name));
     }
 
     _emitInputSourcesChanged() {
@@ -211,7 +211,7 @@ var InputSourceSystemSettings = class extends InputSourceSettings {
                                  try {
                                      props = conn.call_finish(result).deep_unpack()[0];
                                  } catch (e) {
-                                     log(`Could not get properties from ${this._BUS_NAME}`);
+                                     log('Could not get properties from %s'.format(this._BUS_NAME));
                                      return;
                                  }
                                  let layouts = props['X11Layout'].unpack();
@@ -239,7 +239,7 @@ var InputSourceSystemSettings = class extends InputSourceSettings {
         for (let i = 0; i < layouts.length && !!layouts[i]; i++) {
             let id = layouts[i];
             if (variants[i])
-                id += `+${variants[i]}`;
+                id += '+%s'.format(variants[i]);
             sourcesList.push({ type: INPUT_SOURCE_TYPE_XKB, id });
         }
         return sourcesList;
@@ -261,9 +261,9 @@ var InputSourceSessionSettings = class extends InputSourceSettings {
         this._KEY_PER_WINDOW = 'per-window';
 
         this._settings = new Gio.Settings({ schema_id: this._DESKTOP_INPUT_SOURCES_SCHEMA });
-        this._settings.connect(`changed::${this._KEY_INPUT_SOURCES}`, this._emitInputSourcesChanged.bind(this));
-        this._settings.connect(`changed::${this._KEY_KEYBOARD_OPTIONS}`, this._emitKeyboardOptionsChanged.bind(this));
-        this._settings.connect(`changed::${this._KEY_PER_WINDOW}`, this._emitPerWindowChanged.bind(this));
+        this._settings.connect('changed::%s'.format(this._KEY_INPUT_SOURCES), this._emitInputSourcesChanged.bind(this));
+        this._settings.connect('changed::%s'.format(this._KEY_KEYBOARD_OPTIONS), this._emitKeyboardOptionsChanged.bind(this));
+        this._settings.connect('changed::%s'.format(this._KEY_PER_WINDOW), this._emitPerWindowChanged.bind(this));
     }
 
     _getSourcesList(key) {
@@ -1071,7 +1071,7 @@ class InputSourceIndicator extends PanelMenu.Button {
 
         let description = xkbLayout;
         if (xkbVariant.length > 0)
-            description = `${description}\t${xkbVariant}`;
+            description = '%s\t%s'.format(description, xkbVariant);
 
         Util.spawn(['gkbd-keyboard-display', '-l', description]);
     }
index 13eefd72c7e4f6e997eea6355451f9ef1baddda7..5cd6718a3713bfe4a93ef84659aaa1a710d3a7dc 100644 (file)
@@ -48,9 +48,9 @@ class Indicator extends PanelMenu.SystemIndicator {
         super._init();
 
         this._settings = new Gio.Settings({ schema_id: LOCATION_SCHEMA });
-        this._settings.connect(`changed::${ENABLED}`,
+        this._settings.connect('changed::%s'.format(ENABLED),
                                this._onMaxAccuracyLevelChanged.bind(this));
-        this._settings.connect(`changed::${MAX_ACCURACY_LEVEL}`,
+        this._settings.connect('changed::%s'.format(MAX_ACCURACY_LEVEL),
                                this._onMaxAccuracyLevelChanged.bind(this));
 
         this._indicator = this._addIndicator();
@@ -244,7 +244,7 @@ var AppAuthorizer = class {
         this._onAuthDone = onAuthDone;
 
         let appSystem = Shell.AppSystem.get_default();
-        this._app = appSystem.lookup_app(`${this.desktopId}.desktop`);
+        this._app = appSystem.lookup_app('%s.desktop'.format(this.desktopId));
         if (this._app == null || this._permStoreProxy == null) {
             this._completeAuth();
 
index a8d2d08932d5220fe0706a3d16150da861db9d53..65cb722ffb22edcb250eab4a6794a3c1bfce4f14 100644 (file)
@@ -174,7 +174,7 @@ Signals.addSignalMethods(NMConnectionItem.prototype);
 var NMConnectionSection = class NMConnectionSection {
     constructor(client) {
         if (this.constructor === NMConnectionSection)
-            throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`);
+            throw new TypeError('Cannot instantiate abstract type %s'.format(this.constructor.name));
 
         this._client = client;
 
@@ -306,7 +306,7 @@ var NMConnectionDevice = class NMConnectionDevice extends NMConnectionSection {
         super(client);
 
         if (this.constructor === NMConnectionDevice)
-            throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`);
+            throw new TypeError('Cannot instantiate abstract type %s'.format(this.constructor.name));
 
         this._device = device;
         this._description = '';
@@ -579,7 +579,8 @@ var NMDeviceModem = class extends NMConnectionDevice {
     }
 
     _getSignalIcon() {
-        return `network-cellular-signal-${signalToIcon(this._mobileDevice.signal_quality)}-symbolic`;
+        return 'network-cellular-signal-%s-symbolic'.format(
+            signalToIcon(this._mobileDevice.signal_quality));
     }
 };
 
@@ -682,10 +683,12 @@ var NMWirelessDialogItem = GObject.registerClass({
     }
 
     _getSignalIcon() {
-        if (this._ap.mode == NM80211Mode.ADHOC)
+        if (this._ap.mode == NM80211Mode.ADHOC) {
             return 'network-workgroup-symbolic';
-        else
-            return `network-wireless-signal-${signalToIcon(this._ap.strength)}-symbolic`;
+        } else {
+            return 'network-wireless-signal-%s-symbolic'.format(
+                signalToIcon(this._ap.strength));
+        }
     }
 });
 
@@ -1369,7 +1372,7 @@ var NMDeviceWireless = class {
         }
 
         if (this._canReachInternet())
-            return `network-wireless-signal-${signalToIcon(ap.strength)}-symbolic`;
+            return 'network-wireless-signal-%s-symbolic'.format(signalToIcon(ap.strength));
         else
             return 'network-wireless-no-route-symbolic';
     }
@@ -1700,7 +1703,7 @@ class Indicator extends PanelMenu.SystemIndicator {
             try {
                 this._deviceAdded(this._client, devices[i], true);
             } catch (e) {
-                log(`Failed to add device ${devices[i]}: ${e}`);
+                log('Failed to add device %s: %s'.format(devices[i], e.toString()));
             }
         }
         this._syncDeviceNames();
@@ -1998,7 +2001,7 @@ class Indicator extends PanelMenu.SystemIndicator {
                 } catch (e) { }
             });
         } else {
-            log(`Invalid result from portal helper: ${result}`);
+            log('Invalid result from portal helper: %s'.format(result));
         }
     }
 
@@ -2033,7 +2036,7 @@ class Indicator extends PanelMenu.SystemIndicator {
             new PortalHelperProxy(Gio.DBus.session, 'org.gnome.Shell.PortalHelper',
                                   '/org/gnome/Shell/PortalHelper', (proxy, error) => {
                                       if (error) {
-                                          log(`Error launching the portal helper: ${error}`);
+                                          log('Error launching the portal helper: %s'.format(error));
                                           return;
                                       }
 
index 2dd4d26fc8158b05530bc67b54a768fc95f377e0..624228c39dc1ad6e19b472e59aee0e529e674c24 100644 (file)
@@ -23,7 +23,7 @@ class Indicator extends PanelMenu.SystemIndicator {
         super._init();
 
         this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
-        this._desktopSettings.connect(`changed::${SHOW_BATTERY_PERCENTAGE}`,
+        this._desktopSettings.connect('changed::%s'.format(SHOW_BATTERY_PERCENTAGE),
                                       this._sync.bind(this));
 
         this._indicator = this._addIndicator();
@@ -117,7 +117,7 @@ class Indicator extends PanelMenu.SystemIndicator {
             fillLevel === 100)
             icon = 'battery-level-100-charged-symbolic';
         else
-            icon = `battery-level-${fillLevel}${chargingState}-symbolic`;
+            icon = 'battery-level-%d%s-symbolic'.format(fillLevel, chargingState);
 
         // Make sure we fall back to fallback-icon-name and not GThemedIcon's
         // default fallbacks
index a9b3aaf34ad5ddb597d012ce88b0b364eb0c2be4..52be9758392693edba4ce78245831ac89b2f59da 100644 (file)
@@ -315,7 +315,8 @@ class Indicator extends PanelMenu.SystemIndicator {
         let auth = unlocked && allowed;
         policy[0] = auth;
 
-        log(`thunderbolt: [${device.Name}] auto enrollment: ${auth ? 'yes' : 'no'} (allowed: ${allowed ? 'yes' : 'no'})`);
+        log('thunderbolt: [%s] auto enrollment: %s (allowed: %s)'.format(
+            device.Name, auth ? 'yes' : 'no', allowed ? 'yes' : 'no'));
 
         if (auth)
             return; /* we are done */
index 5ffb18989f3e7d2d2d67b328cf0b23250ae50e2c..434dcfbf7f0f79c2ee538f24f90f6faa6b2fa370 100644 (file)
@@ -36,7 +36,7 @@ var StreamSlider = class {
         this._slider = new Slider.Slider(0);
 
         this._soundSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.sound' });
-        this._soundSettings.connect(`changed::${ALLOW_AMPLIFIED_VOLUME_KEY}`, this._amplifySettingsChanged.bind(this));
+        this._soundSettings.connect('changed::%s'.format(ALLOW_AMPLIFIED_VOLUME_KEY), this._amplifySettingsChanged.bind(this));
         this._amplifySettingsChanged();
 
         this._sliderChangedId = this._slider.connect('notify::value',
index 70968ad4d81f71b4417783254ddbf669bbbff269..7f33e68e123baa11fa3e5a825dc7ca2253752b29 100644 (file)
@@ -98,7 +98,7 @@ var NotificationsBox = GObject.registerClass({
 
         let count = source.unseenCount;
         let countLabel = new St.Label({
-            text: `${count}`,
+            text: count.toString(),
             visible: count > 1,
             style_class: 'unlock-dialog-notification-count-text',
         });
@@ -137,7 +137,7 @@ var NotificationsBox = GObject.registerClass({
             }
 
             let label = new St.Label({ style_class: 'unlock-dialog-notification-count-text' });
-            label.clutter_text.set_markup(`<b>${n.title}</b> ${body}`);
+            label.clutter_text.set_markup('<b>%s</b> %s'.format(n.title, body));
             textBox.add(label);
 
             visible = true;
@@ -262,7 +262,7 @@ var NotificationsBox = GObject.registerClass({
             this._showSource(source, obj, obj.sourceBox);
         } else {
             let count = source.unseenCount;
-            obj.countLabel.text = `${count}`;
+            obj.countLabel.text = count.toString();
             obj.countLabel.visible = count > 1;
         }
 
index 8634274a498a5e770b3030336ac1321c24d335f2..075fbb15bb44ff4e9da0dc44ce87687fdb805461 100644 (file)
@@ -123,7 +123,8 @@ class WindowDimmer extends Clutter.BrightnessContrastEffect {
     }
 
     _syncEnabled() {
-        let animating = this.actor.get_transition(`@effects.${this.name}.brightness`) != null;
+        let transitionName = '@effects.%s.brightness'.format(this.name);
+        let animating = this.actor.get_transition(transitionName) != null;
         let dimmed = this.brightness.red != 127;
         this.enabled = this._enabled && (animating || dimmed);
     }
@@ -137,7 +138,8 @@ class WindowDimmer extends Clutter.BrightnessContrastEffect {
         let val = 127 * (1 + (dimmed ? 1 : 0) * DIM_BRIGHTNESS);
         let color = Clutter.Color.new(val, val, val, 255);
 
-        this.actor.ease_property(`@effects.${this.name}.brightness`, color, {
+        let transitionName = '@effects.%s.brightness'.format(this.name);
+        this.actor.ease_property(transitionName, color, {
             mode: Clutter.AnimationMode.LINEAR,
             duration: (dimmed ? DIM_TIME : UNDIM_TIME) * (animate ? 1 : 0),
             onComplete: () => this._syncEnabled(),